The present invention relates to integrated development environment (IDE) tools, and more specifically, to managing source code assertions in a source code component separately from the component.
Assertions are small segments of source code used to help debug a computer program. An assertion typically specifies a condition used to test whether a program is functioning correctly. If the condition in an assertion evaluates to true, then the program is presumed to be functioning correctly (at least relative to the condition specified in the assertion). In such a case, the assertion does not interfere with program execution, apart from the overhead of testing the condition. However, if the condition in an assertion evaluates to false, the assertion could terminate the program, allow program execution to continue unhindered, throw an exception to leave the erroneous code path, or allow a user to choose how to proceed.
Typically, developers manually include, edit, and remove assertions from source code while developing an application. As developers use assertions to test source code, developers will typically remove assertions from source code during the development process once code is believed to be functioning correctly. However, in some cases, code after an assertion may depend on a variable introduced or process performed within the assertion.
Assertions vary in complexity and the amount of time required to execute a given assertion during run-time. A simple assertion, such as checking the value of a variable (e.g., “assert (i>0)”) may have a minimal impact on processing. More complex assertions, such as determining whether the elements of a linked list are in a particular order may use a relatively large amount of processing time. Because processing assertions adds overhead to executing a compiled program which includes the assertions, it may be desirable to remove some assertions before compiling source code into program code.
However, as developers revise source code, some assertions (deleted from source code) may need to be recreated to test the revised code.